home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / Javacup / PR8ADPL7.TAR / productivity_tools / PR8ADPL7 / StringSplitter.java < prev    next >
Encoding:
Java Source  |  1996-05-23  |  1.9 KB  |  97 lines

  1. import java.util.Vector;
  2.  
  3. // StringSplitter
  4. // A stringsplitter object splits a string into a number of substrings,
  5. // each separated by one separator character. Separator characters can be
  6. // included in the string by escaping them with a \
  7. public class StringSplitter
  8. {
  9.     Vector parts = new Vector();
  10.     int pos = 0;
  11.  
  12.     StringSplitter(String str, char sep)
  13.     {
  14.     StringBuffer current;
  15.  
  16.     parts.addElement(current = new StringBuffer());
  17.     for(int i=0; i<str.length(); i++) {
  18.         char c = str.charAt(i);
  19.         if (c == '\\' && i != str.length()-1)
  20.             current.append(str.charAt(++i));
  21.         else if (c == sep)
  22.             parts.addElement(current = new StringBuffer());
  23.         else
  24.             current.append(c);
  25.         }
  26.     }
  27.  
  28.     // countTokens
  29.     // The number of tokens left in the string
  30.     int countTokens()
  31.     {
  32.     return parts.size() - pos;
  33.     }
  34.  
  35.     // hasMoreTokens
  36.     // Can we call nextToken?
  37.     boolean hasMoreTokens()
  38.     {
  39.     return pos <= parts.size();
  40.     }
  41.  
  42.     // nextToken
  43.     // Returns the string value of the next token
  44.     String nextToken()
  45.     {
  46.     if (pos < parts.size())
  47.         return ((StringBuffer)parts.elementAt(pos++)).toString();
  48.     else
  49.         return null;
  50.     }
  51.  
  52.     // gettokens
  53.     // Returns a vector of strings split from the given input string
  54.     Vector gettokens()
  55.     {
  56.     return parts;
  57.     }
  58. }
  59.  
  60.  
  61. // StringJoiner
  62. // The complement of StringSplitter. Takes a number of substrings and adds
  63. // them to a string, separated by some character. If the separator character
  64. // appears in one of the substrings, escape it with a \
  65. class StringJoiner
  66. {
  67.     char sep;
  68.     StringBuffer str = new StringBuffer();
  69.  
  70.     // Create a new StringJoiner using the given separator
  71.     StringJoiner(char s)
  72.     {
  73.     sep = s;
  74.     }
  75.  
  76.     // add
  77.     // Add one string, and a separator
  78.     void add(String s)
  79.     {
  80.     if (str.length() != 0)
  81.         str.append(sep);
  82.     for(int i=0; i<s.length(); i++) {
  83.         char c = s.charAt(i);
  84.         if (c == sep || c == '\\') str.append('\\');
  85.         str.append(c);
  86.         }
  87.     }
  88.  
  89.     // toString
  90.     // Get the resulting string
  91.     public String toString()
  92.     {
  93.     return str.toString();
  94.     }
  95. }
  96.  
  97.